home *** CD-ROM | disk | FTP | other *** search
- /* @(#) IsSavvyTool.c 6/17/92
- {Sources}Hack:IsSavvyTool.c
-
- No rights reserved
-
- Product: Joel’s MacHack ’92 entry
- File: IsSavvyTool.c
- Author: Joel West, Palomar Software
- Date: Wed, Jun 17, 1992
- Description: MPW tool prototype
- Used to validate core logic, basically accuracy
- of TSizeStruct and usage of 'SIZE' 0/-1
- Usage:
- IsSavvy file1 [… file2 …]
- check accuracy against
- DeRez -only 'SIZE' file Types.r
- */
-
- #include "Savvy.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <ErrMgr.h>
- #include <Strings.h>
- #include <Resources.h>
- #include <Errors.h>
- #include <Memory.h>
-
- #define kDefaultSize -1
- #define kUserSize 0
-
-
- main (Integer argC, char **argV)
- { Integer i;
- OSErr err;
- Integer exitCode = 0;
- TSizeStruct sizersrc;
- char msg[255];
-
- InitErrMgr(NULL,NULL,true);
-
- for ( i = 1; i < argC; i++ ) {
-
- /* Check the resource attrs */
- c2pstr(argV[i]);
- err = GetSavvyRsrcFromName(argV[i],&sizersrc);
- switch (err) {
- case noSizeRsrc:
- case notApp:
- goto doublebreak;
- }
-
- if ( err != noErr ) {
- fprintf ( stderr, "# %s - Can’t open file : %P\n", argV[0], argV[i]);
- (void) GetSysErrText(err, msg);
- fprintf ( stderr, "# %s\n", msg);
- exitCode = 1;
- break;
- }
- printf("%P\t%c%c%c%c%c\n", argV[i],
- sizersrc.is32BitCompatible ? '3' : '2',
- sizersrc.isHighLevelEventAware ? 'H' : 'h',
- sizersrc.localAndRemoteHLEvents ? 'R' : 'r',
- sizersrc.isStationeryAware ? 'S' : 's',
- sizersrc.useTextEditServices ? 'T' : 't');
- }
- doublebreak:
- exit ( exitCode );
- }
-
- /* Open the specified file and get its 'SIZE' resource */
- OSErr GetSavvyRsrcFromName(ConstStr255Param pathname,TSizeStruct *foundsize)
- { OSErr err;
- Integer refno;
-
- refno = OpenResFile(pathname);
- err = ResError();
- if (refno >= 0 && err == noErr) {
- err = GetSavvyRsrc(refno, foundsize);
- CloseResFile(refno);
- if (err == noErr)
- err = ResError();
- }
-
- return err;
- }
-
- /* Get the best 'SIZE' resource from the specified resource file */
- OSErr GetSavvyRsrc(Integer refnum,TSizeStruct *foundsize)
- { Handle h;
- OSErr err;
- Integer curmap = CurResFile();
- // set resload?
-
- UseResFile(refnum);
- h = Get1Resource('SIZE',kUserSize);
- if (h == NULL)
- h = Get1Resource('SIZE',kDefaultSize);
- err = ResError();
- UseResFile(curmap);
- if (h != NULL) {
- BlockMove(*h,foundsize,sizeof(TSizeStruct));
- ReleaseResource(h);
- return noErr;
- }
- return (err == resNotFound) ? noSizeRsrc : err;
- }